<?php

//1.php -m
//2.yum list | grep amqp
//3.安装扩展：yum install -y php-pecl-amqp
//4.systemctl restart php-fpm.service
//5.重新生成composer dump-autoload -o

return [
    //连接属性
    'credentials' => [
        'default' => [
            // 虚拟Ip地址 192.168.80.14 实际ip： 192.168.71.55 192.168.71.56
            'host' => '192.168.80.14',
            'port' => 5672,
            'vhost' => 'rpo',
            'login' => 'rpo',
            'password' => decrypt(env('RABBITMQ_CRYPT_KEY', '')),
            'persistent' => false,
            'read_timeout' => 5,
            'write_timeout' => 5,
            'connect_timeout' => 5,
        ]
    ],
    //交换机配置定义
    'exchanges' => [
        'resumeupdate' => [
            //交换机名称
            'name' => 'resumeupdate',
            //交换机类型  AMQP_EX_TYPE_DIRECT AMQP_EX_TYPE_FANOUT AMQP_EX_TYPE_TOPIC
            'type' => AMQP_EX_TYPE_DIRECT,
            //检测exchange是否存在，若队列存在则命令成功返回（调用其他参数不会影响exchange属性），若不存在不会创建exchange，返回错误。
            'passive' => false,
            //是否持久化,durable设置为true表示持久化,反之是非持久化,持久化的可以将交换器存盘,在服务器重启的时候不会丢失信息.
            'durable' => false,
            'arguments' => [
                'memo' => '简历更新交换机',
            ],
        ],
        'noticehandler' => [
            //消息通知生成交换机
            'name' => 'noticehandler',
            //交换机类型  AMQP_EX_TYPE_DIRECT AMQP_EX_TYPE_FANOUT AMQP_EX_TYPE_TOPIC
            'type' => AMQP_EX_TYPE_DIRECT,
            //检测exchange是否存在，若队列存在则命令成功返回（调用其他参数不会影响exchange属性），若不存在不会创建exchange，返回错误。
            'passive' => false,
            //是否持久化,durable设置为true表示持久化,反之是非持久化,持久化的可以将交换器存盘,在服务器重启的时候不会丢失信息.
            'durable' => false,
            'arguments' => [
                'memo' => '通知消息数据源队列存放交换机',
            ],
        ]
    ],
    'businesses' => [
        //简历更新队列日志
        'resumeupdate' => [
            'credential' => 'default',
            'exchange' => 'resumeupdate',
            'queues' => [
                'updateresume_resumelist' => [
                    //绑定路由规则
                    'routekeys' => ['updateresume_resumelist'],
                    //检测相应的队列是否存在，有就正常返回，不存在就抛出异常404
                    'passive' => false,
                    // 是否排他的，true，排他。如果一个队列声明为排他队列，该队列公对首次声明它的连接可见，并在连接断开时自动删除
                    'exclusive' => false,
                    // 是否持久化， true ，表示持久化，会存盘，服务器重启仍然存在，false，非持久化
                    'durable' => true,
                    // 是否自动删除,true，自动删除，自动删除的前提：至少有一个消息者连接到这个队列，之后所有与这个队列连接的消息都断开时，才会自动删除，，
                    //备注：生产者客户端创建这个队列，或者没有消息者客户端连接这个队列时，不会自动删除这个队列
                    //当客户端终结时，exclusive类型的队列则一定会自动删除。
                    'autodelete' => false,
                    'arguments' => [
                        'memo' => '简历更新',
                    ],
                ]
            ],
            'type' => 'consumer',
        ],
        'noticehandler' => [
            'credential' => 'default',
            'exchange' => 'noticehandler',
            'queuename' => 'noticehandler',
            'queues' => [
                'noticehandler' => [
                    //匿名队列，用于订阅模式
                    'anonymous' => false,
                    //检测相应的队列是否存在，有就正常返回，不存在就抛出异常404
                    'passive' => false,
                    // 是否排他的，true，排他。如果一个队列声明为排他队列，该队列公对首次声明它的连接可见，并在连接断开时自动删除
                    'exclusive' => false,
                    // 是否持久化， true ，表示持久化，会存盘，服务器重启仍然存在，false，非持久化
                    'durable' => true,
                    //队列不存在是是否声明创建
                    'declare' => true,
                    // 是否自动删除,true，自动删除，自动删除的前提：至少有一个消息者连接到这个队列，之后所有与这个队列连接的消息都断开时，才会自动删除，，
                    //备注：生产者客户端创建这个队列，或者没有消息者客户端连接这个队列时，不会自动删除这个队列
                    //当客户端终结时，exclusive类型的队列则一定会自动删除。
                    'autodelete' => false,
                    'arguments' => [
                        'memo' => '存放通知消息数据源，另外一个程序从该队列中消费消息，生成消息实体',
                    ],
                    //绑定路由规则
                    'routekeys' => [],
                ],
            ],
        ],
    ],
];
